// var a;//声明变量
// var a = 10;//声明变量的同时进行初始化 

/**
 * 1.var声明变量有什么特点？
 * 特点：1.会进行变量提升 
 *  书写顺序：
 *  console.log(a);
    var a = 10;
    解析为var a;console.log(a);a = 10;
    2.可以重复声明变量
        var a = 10;
        var a = 20;
        var a = 30;
    3.不存在块级作用域  for(){} if(){}
    if(true){
    var a = 10;
    }
    console.log(a);//10
 */

/**
 * let声明变量的特点
 * 1.不会进行变量提升
 *      console.log(a);
        let a = 10;//报错 Cannot access 'a' before initialization
    2.变量不可以重复声明
        let a = 10;
        let a = 20;//报错
    3.存在块级作用域
    if(true){
        let a = 10;
    }
    console.log(a);//报错a is not defined 
 */
/**
 * const声明变量的特点
 *  1.不会进行变量提升
 *  console.log(a);
    const a = 10;//报错 Cannot access 'a' before initialization
    2.不可以重复声明
        const a = 10;
        const a = 20;//报错
    3.存在块级作用域
        if(true){
            const a = 10;
        }
        console.log(a);//报错 a is not defined 
    4.声明变量必须进行初始化 一般用于声明常量 
        var a;
        let b;
        const c = 10;
    5.一旦给变量进行初始化就不可以再次赋值
        const a = 10;
             a = 20;//报错 
        console.log(a);
 */





